package sword.T56;

/**
 * @Author: 18362
 * @Create: 2022-04-10 10:20:30 星期日
 */
class Solution2 {
    /**
     * 思路：统计所有数字各个位置上1的个数，之后对3取模就可以得到那个唯一的数字在该位置上是否为1
     */
    public int singleNumber(int[] nums) {
        int[] bits = new int[32];
        for (int i=0; i<nums.length; ++i) {
            int mask = 1;
            for (int j=0; j<32; ++j) {
                bits[j] += (mask & nums[i]) > 0 ? 1 : 0;
                mask <<= 1;
            }
        }
        int result = 0;
        for (int i=0; i<32; ++i) {
            result += ((bits[i]%3) << i);
        }
        return result;
    }
}
